;;; soothe-tva.el --- Autothemer TVA engine for soothe-theme -*- lexical-binding: t; -*-
;;
;; Copyright (C) 2012-2022 Jason Milkins
;;
;; Author: Jason Milkins <jasonm23@gmail.com>
;; Maintainer: Jason Milkins <jasonm23@gmail.com>
;; URL: https://github.com/emacsfodder/emacs-soothe-theme
;; Version: 2.0.0
;; Package-Requires: ((emacs "24.3") (autothemer "0.2"))
;;
;; This file is not part of GNU Emacs.
;;
;;; License
;;
;; This program is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 3, or (at your option)
;; any later version.

;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with this program; see the file COPYING.  If not, write to
;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth
;; Floor, Boston, MA 02110-1301, USA.

;;; Commentary:
;;
;;  TVA/autothemer engine for soothe-theme
;;
;;; Code:

(require 'autothemer)

(unless (>= emacs-major-version 24)
  (error "Requires Emacs 24 or later"))
(defmacro soothe-tva-deftheme (name description palette &rest body)
  "Create a soothe-theme: NAME, DESCRIPTION, PALETTE, BODY."
  `(autothemer-deftheme ,name ,description ,palette
    ;;; Face specs
    ((default                                   (:foreground soothe-foreground                :background soothe-background))
     (ac-candidate-mouse-face                   (:foreground soothe-foreground-1              :background soothe-turquoise-1))
     (ac-candidate-face                         (:foreground soothe-background                :background soothe-foreground-2))
     (ac-completion-face                        (:foreground soothe-foreground-0              :background soothe-purple-3bg))
     (ac-gtags-candidate-face                   (:foreground soothe-background                :background soothe-purple-3))
     (ac-gtags-selection-face                   (:foreground soothe-foreground-2              :background soothe-background-2))
     (ac-selection-face                         (:foreground soothe-foreground-2              :background soothe-background-2))
     (ac-yasnippet-candidate-face               (:foreground soothe-background                :background soothe-green-2))
     (ac-yasnippet-selection-face               (:foreground soothe-foreground-1              :background soothe-background-2))
     (company-echo                              (:inherit 'company-echo-common))
     (company-echo-common                       (:foreground soothe-prime-blue                :background nil))
     (company-preview                           (:inherit 'company-preview-common))
     (company-preview-common                    (:inherit 'font-lock-builtin-face             :underline soothe-foreground-1))
     (company-preview-search                    (:inherit 'company-preview-common))
     (company-scrollbar-bg                      (:foreground nil                              :background soothe-turquoise-2bg))
     (company-scrollbar-fg                      (:foreground nil                              :background soothe-turquoise-2))
     (company-template-field                    (:foreground soothe-prime-blue                :background nil :underline soothe-bg-blue))
     (company-tooltip                           (:foreground soothe-foreground-0              :background soothe-turquoise-1bg))
     (company-tooltip-annotation                (:foreground soothe-foreground-0              :background soothe-turquoise-2bg))
     (company-tooltip-common                    (:foreground soothe-prime-turquoise           :background soothe-turquoise-2bg))
     (company-tooltip-common-selection          (:foreground soothe-prime-orange              :background soothe-turquoise-2bg))
     (company-tooltip-mouse                     (:foreground soothe-prime-purple              :background soothe-turquoise-2bg))
     (company-tooltip-selection                 (:inherit 'font-lock-constant-face            :background soothe-background-dark-0))
     (cua-global-mark                           (:foreground soothe-foreground-1              :background soothe-turquoise-1))
     (cua-rectangle                             (:foreground soothe-foreground-1              :background soothe-purple-4))
     (cua-rectangle-noselect                    (:foreground soothe-foreground-1              :background soothe-prime-orange))
     (cursor                                    (:background soothe-prime-orange))
     (diff-added                                (:foreground soothe-overexposed-green         :background soothe-dark-green))
     (diff-changed                              (:foreground soothe-overexposed-purple        :background soothe-dark-purple))
     (diff-changed-unspcified                   (:foreground soothe-overexposed-purple        :background soothe-dark-purple))
     (diff-context                              (:foreground soothe-foreground-1))
     (diff-file-header                          (:foreground soothe-prime-orange              :background soothe-orange-1bg))
     (diff-function                             (:foreground soothe-foreground-1              :background soothe-dark-orange))
     (diff-hl-change                            (:foreground soothe-prime-purple              :background soothe-purple-1bg))
     (diff-hl-delete                            (:foreground soothe-prime-red                 :background soothe-red-1bg))
     (diff-hl-insert                            (:foreground soothe-prime-green               :background soothe-green-2bg))
     (diff-hunk-header                          (:foreground soothe-prime-purple              :background soothe-purple-1bg))
     (diff-refine-added                         (:inherit 'diff-added))
     (diff-refine-changed                       (:inherit 'diff-changed))
     (diff-refine-removed                       (:inherit 'diff-removed))
     (diff-removed                              (:foreground soothe-overexposed-red           :background soothe-dark-red))
     (dired-directory                           (:foreground soothe-prime-turquoise           :background soothe-bg-turquoise))
     (dired-flagged                             (:foreground soothe-prime-red                 :background soothe-orange-1bg))
     (dired-header                              (:foreground soothe-prime-orange              :background soothe-background))
     (dired-ignored                             (:foreground soothe-turquoise-1               :background soothe-background))
     (dired-mark                                (:foreground soothe-orange-2                  :background soothe-background))
     (dired-marked                              (:foreground soothe-prime-orange              :background soothe-orange-1bg))
     (dired-perm-write                          (:foreground soothe-prime-turquoise           :background soothe-turquoise-1bg))
     (dired-symlink                             (:foreground soothe-prime-blue                :background soothe-blue-4bg))
     (dired-warning                             (:foreground soothe-prime-red                 :background soothe-red-2bg))
     (diredfl-autofile-name                     (:foreground soothe-prime-blue                :background soothe-dark-purple))
     (diredfl-compressed-file-name              (:foreground soothe-prime-turquoise))
     (diredfl-compressed-file-suffix            (:foreground soothe-turquoise-0))
     (diredfl-date-time                         (:foreground soothe-prime-orange              :background soothe-dark-purple))
     (diredfl-deletion                          (:foreground soothe-prime-orange              :background soothe-red-3))
     (diredfl-deletion-file-name                (:foreground soothe-red-3                     :background-color soothe-red-2bg))
     (diredfl-dir-heading                       (:inherit 'font-lock-builtin-face))
     (diredfl-dir-name                          (:inherit 'dired-directory))
     (diredfl-dir-priv                          (:foreground soothe-prime-orange              :background soothe-bg-orange))
     (diredfl-exec-priv                         (:foreground soothe-prime-red                 :background soothe-bg-red))
     (diredfl-executable-tag                    (:foreground soothe-red-3))
     (diredfl-file-name                         (:foreground soothe-prime-purple              :background soothe-dark-purple))
     (diredfl-file-suffix                       (:foreground soothe-faded-purple              :background soothe-dark-purple))
     (diredfl-flag-mark                         (:foreground soothe-prime-orange              :background soothe-bg-orange))
     (diredfl-flag-mark-line                    (:background soothe-low-red))
     (diredfl-flagged                           (:inherit 'dired-flagged))
     (diredfl-header                            (:inherit 'dired-header))
     (diredfl-ignored                           (:inherit 'dired-ignored))
     (diredfl-ignored-file-name                 (:foreground soothe-prime-orange))
     (diredfl-link-priv                         (:foreground soothe-prime-turquoise           :background soothe-bg-turquoise))
     (diredfl-mark                              (:inherit 'dired-mark))
     (diredfl-marked                            (:inherit 'dired-marked))
     (diredfl-no-priv                           (:foreground soothe-faded-purple              :background soothe-dark-purple))
     (diredfl-number                            (:foreground soothe-prime-orange              :background soothe-orange-1bg))
     (diredfl-other-priv                        (:background soothe-blue-5bg))
     (diredfl-rare-priv                         (:foreground soothe-prime-green               :background soothe-prime-red))
     (diredfl-read-priv                         (:foreground soothe-prime-purple              :background soothe-bg-purple))
     (diredfl-symlink                           (:inherit 'dired-symlink))
     (diredfl-tagged-autofile-name              (:background soothe-purple-3bg))
     (diredfl-warning                           (:inherit 'dired-warning))
     (diredfl-write-priv                        (:inherit 'dired-perm-write))
     (diredp-autofile-name                      (:inherit 'diredfl-autofile-name))
     (diredp-compressed-file-name               (:inherit 'diredfl-compressed-file-name))
     (diredp-compressed-file-suffix             (:inherit 'diredfl-compressed-file-suffix))
     (diredp-date-time                          (:inherit 'diredfl-date-time))
     (diredp-deletion                           (:inherit 'diredfl-deletion))
     (diredp-deletion-file-name                 (:inherit 'diredfl-deletion-file-name))
     (diredp-dir-heading                        (:inherit 'diredfl-dir-heading))
     (diredp-dir-name                           (:inherit 'diredfl-dir-name))
     (diredp-dir-priv                           (:inherit 'diredfl-dir-priv))
     (diredp-exec-priv                          (:inherit 'diredfl-exec-priv))
     (diredp-executable-tag                     (:inherit 'diredfl-executable-tag))
     (diredp-file-name                          (:inherit 'diredfl-file-name))
     (diredp-file-suffix                        (:inherit 'diredfl-file-suffix))
     (diredp-flag-mark                          (:inherit 'diredfl-flag-mark))
     (diredp-flag-mark-line                     (:inherit 'diredfl-flag-mark-line))
     (diredp-ignored-file-name                  (:inherit 'diredfl-ignored-file-name))
     (diredp-link-priv                          (:inherit 'diredfl-link-priv))
     (diredp-no-priv                            (:inherit 'diredfl-no-priv))
     (diredp-number                             (:inherit 'diredfl-number))
     (diredp-other-priv                         (:inherit 'diredfl-other-priv))
     (diredp-rare-priv                          (:inherit 'diredfl-rare-priv))
     (diredp-read-priv                          (:inherit 'diredfl-read-priv))
     (diredp-symlink                            (:inherit 'diredfl-symlink))
     (diredp-tagged-autofile-name               (:inherit 'diredfl-tagged-autofile-name))
     (diredp-write-priv                         (:inherit 'diredfl-write-priv))
     (dropdown-list-face                        (:foreground soothe-background                :background soothe-foreground-1))
     (dropdown-list-selection-face              (:foreground soothe-foreground-1              :background soothe-purple-1bg))
     (ecb-default-general-face                  (:foreground soothe-foreground))
     (ecb-default-highlight-face                (:foreground soothe-prime-purple              :background soothe-purple-1bg))
     (ecb-method-face                           (:foreground soothe-prime-orange              :background soothe-orange-1bg))
     (ecb-tag-header-face                       (:foreground soothe-prime-turquoise           :background soothe-turquoise-1bg))
     (ediff-current-diff-A                      (:background soothe-bg-red))
     (ediff-current-diff-Ancestor               (:background soothe-dark-blue))
     (ediff-current-diff-B                      (:background soothe-turquoise-1bg))
     (ediff-current-diff-C                      (:background soothe-bg-green))
     (ediff-even-diff-A                         (:background soothe-dark-red))
     (ediff-even-diff-Ancestor                  (:background soothe-dark-blue))
     (ediff-even-diff-B                         (:background soothe-turquoise-3))
     (ediff-even-diff-C                         (:background soothe-bg-green))
     (ediff-fine-diff-A                         (:background soothe-dark-red))
     (ediff-fine-diff-Ancestor                  (:background soothe-bg-blue))
     (ediff-fine-diff-B                         (:background soothe-turquoise-2bg))
     (ediff-fine-diff-C                         (:background soothe-dark-green))
     (ediff-odd-diff-A                          (:background soothe-red-2bg))
     (ediff-odd-diff-Ancestor                   (:background soothe-bg-blue))
     (ediff-odd-diff-B                          (:background soothe-turquoise-3))
     (ediff-odd-diff-C                          (:background soothe-green-1bg))
     (error                                     (:foreground soothe-prime-red                 :background soothe-red-1bg))
     (escape-glyph                              (:foreground soothe-prime-red                 :background soothe-purple-1bg))
     (flymake-errline                           (:underline soothe-red-2                      :background nil                       :inherit nil))
     (flymake-warnline                          (:underline soothe-green-2                    :background nil                       :inherit nil))
     (flyspell-duplicate                        (:underline soothe-green-2))
     (flyspell-incorrect                        (:underline soothe-red-2))
     (font-lock-builtin-face                    (:foreground soothe-red-2                     :background soothe-red-1bg))
     (font-lock-comment-delimiter-face          (:foreground soothe-turquoise-1               :background soothe-alt-background :italic t))
     (font-lock-comment-face                    (:foreground soothe-prime-purple              :background soothe-alt-background :italic t))
     (font-lock-constant-face                   (:foreground soothe-prime-purple              :background soothe-purple-1bg))
     (font-lock-doc-face                        (:foreground soothe-prime-turquoise           :background soothe-gray-1bg))
     (font-lock-function-name-face              (:foreground soothe-prime-red                 :background soothe-red-1bg))
     (font-lock-keyword-face                    (:foreground soothe-prime-orange              :background soothe-orange-1bg))
     (font-lock-negation-char-face              (:foreground soothe-prime-yellow              :background soothe-yellow-1bg))
     (font-lock-preprocessor-face               (:foreground soothe-prime-orange              :background soothe-orange-1bg))
     (font-lock-string-face                     (:foreground soothe-prime-turquoise           :background soothe-turquoise-2bg))
     (font-lock-type-face                       (:foreground soothe-red-2                     :background soothe-red-1bg :bold nil))
     (font-lock-variable-name-face              (:foreground soothe-prime-blue                :background soothe-blue-1bg))
     (font-lock-warning-face                    (:foreground soothe-red-2                     :background soothe-red-2bg))
     (fringe                                    (:background soothe-gray-3bg))
     (git-gutter                                :added                                        (:foreground soothe-prime-green       :background soothe-green-2bg))
     (git-gutter                                :deleted                                      (:foreground soothe-prime-red         :background soothe-red-1bg))
     (git-gutter                                :modified                                     (:foreground soothe-prime-purple      :background soothe-purple-1bg))
     (git-gutter                                :unchanged                                    (:background soothe-yellow-1bg))
     (highlight                                 (:background soothe-blue-5bg))
     (highlight-indentation-current-column-face (:background soothe-gray-5))
     (highlight-indentation-face                (:background soothe-background-dark))
     (hl-line                                   (:background soothe-bg-turquoise))
     (hl-sexp-face                              (:background soothe-turquoise-2bg))
     (ido-first-match                           (:foreground soothe-prime-orange              :background soothe-orange-1bg))
     (ido-incomplete-regexp                     (:foreground soothe-prime-red                 :background soothe-orange-1bg))
     (ido-indicator                             (:foreground soothe-turquoise-1               :background soothe-turquoise-1bg))
     (ido-only-match                            (:foreground soothe-prime-green               :background soothe-green-1bg))
     (ido-subdir                                (:foreground soothe-prime-purple              :background soothe-purple-1bg))
     (ido-virtual                               (:foreground soothe-green-3                   :background soothe-turquoise-1bg))
     (iedit-occurrence                          (:inherit 'match                              :foreground soothe-prime-purple))
     (iedit-read-only-occurrence                (:inherit 'match                              :foreground soothe-prime-red))
     (isearch                                   (:foreground soothe-foreground-1              :background soothe-purple-2bg))
     (isearch-fail                              (:foreground soothe-foreground-1              :background soothe-low-red))
     (ivy-action                                (:inherit 'font-lock-builtin-face))
     (ivy-completions-annotations               (:inherit 'completions-annotations))
     (ivy-confirm-face                          (:inherit 'minibuffer-prompt                  :foreground soothe-rainbow-delimiters-0))
     (ivy-current-match                         (:inherit 'match))
     (ivy-cursor                                (:foreground soothe-foreground-1              :background soothe-bg-turquoise))
     (ivy-grep-info                             (:inherit 'compilation-info))
     (ivy-grep-line-number                      (:inherit 'compilation-line-number))
     (ivy-highlight-face                        (:inherit 'highlight))
     (ivy-match-required-face                   (:inherit 'minibuffer-prompt                  :foreground soothe-red-3))
     (ivy-minibuffer-match-face-1               (:inherit 'match))
     (ivy-minibuffer-match-face-2               (:inherit 'highlight))
     (ivy-minibuffer-match-face-3               (:inherit 'secondary-selection))
     (ivy-minibuffer-match-face-4               (:inherit 'region))
     (ivy-minibuffer-match-highlight            (:inherit 'highlight))
     (ivy-modified-buffer                       (:inherit 'default))
     (ivy-modified-outside-buffer               (:inherit 'default))
     (ivy-org                                   (:inherit 'org-level-4))
     (ivy-prompt-match                          (:inherit 'ivy-current-match))
     (ivy-remote                                (:foreground soothe-blue-5bg))
     (ivy-separator                             (:inherit 'font-lock-doc-face))
     (ivy-subdir                                (:inherit 'dired-directory))
     (ivy-virtual                               (:inherit 'font-lock-builtin-face))
     (ivy-yanked-word                           (:inherit 'highlight))
     (js3-error-face                            (:background soothe-red-1bg                   :underline (:color soothe-prime-red :style 'wave)))
     (js3-external-variable-face                (:foreground soothe-prime-purple              :background soothe-purple-1bg))
     (js3-function-param-face                   (:foreground soothe-prime-turquoise           :background soothe-blue-3bg))
     (js3-instance-member-face                  (:foreground soothe-foreground-2              :background soothe-purple-1bg))
     (js3-jsdoc-html-tag-delimiter-face         (:foreground soothe-blue-4                    :background soothe-blue-2bg))
     (js3-jsdoc-html-tag-name-face              (:foreground soothe-foreground-1              :background soothe-blue-3bg))
     (js3-jsdoc-tag-face                        (:foreground soothe-green-3                   :background soothe-green-2bg))
     (js3-jsdoc-type-face                       (:foreground soothe-green-2                   :background soothe-green-2bg))
     (js3-jsdoc-value-face                      (:foreground soothe-prime-green               :background soothe-green-1bg))
     (js3-magic-paren-face                      (:foreground soothe-foreground-0              :background soothe-purple-1bg))
     (js3-private-function-call-face            (:foreground soothe-prime-orange              :background soothe-orange-1bg))
     (js3-private-member-face                   (:foreground soothe-orange-2                  :background soothe-orange-1bg))
     (js3-warning-face                          (:background soothe-yellow-1bg                :underline (:color soothe-prime-yellow :style 'wave)))
     (lazy-highlight                            (:foreground soothe-prime-purple              :background soothe-purple-2bg))
     (link                                      (:foreground soothe-prime-blue                :background soothe-blue-1bg))
     (link-visited                              (:foreground soothe-prime-turquoise           :background soothe-blue-4bg))
     (linum                                     (:foreground soothe-gray-6                    :background soothe-alt-background))
     (magit-branch                              (:foreground soothe-prime-orange              :background soothe-orange-2bg))
     (magit-branch-current                      (:foreground soothe-prime-purple              :background soothe-purple-1bg :box (:line-width -1 :color soothe-prime-purple)))
     (magit-branch-local                        (:foreground soothe-prime-purple              :background soothe-purple-1bg))
     (magit-branch-remote                       (:foreground soothe-prime-orange              :background soothe-orange-2bg))
     (magit-diff-added                          (:foreground soothe-foreground-1              :background soothe-bg-green))
     (magit-diff-added-highlight                (:foreground soothe-foreground-1              :background soothe-dark-green))
     (magit-diff-base                           (:foreground soothe-foreground                :background soothe-rainbow-delimiters-0))
     (magit-diff-base-highlight                 (:foreground soothe-foreground-0              :background soothe-rainbow-delimiters-0))
     (magit-diff-conflict-heading               (:inherit 'magit-diff-hunk-heading))
     (magit-diff-context                        (:background soothe-background))
     (magit-diff-context-highlight              (:background soothe-alt-background))
     (magit-diff-file-heading                   (:weight 'bold))
     (magit-diff-file-heading-highlight         (:inherit 'magit-section-highlight))
     (magit-diff-file-heading-selection         (:inherit 'magit-diff-file-heading-highlight  :foreground soothe-prime-yellow))
     (magit-diff-hunk-heading                   (:foreground soothe-foreground                :background soothe-low-purple))
     (magit-diff-hunk-heading-highlight         (:foreground soothe-foreground                :background soothe-low-purple))
     (magit-diff-hunk-heading-selection         (:foreground soothe-prime-yellow              :inherit 'magit-diff-hunk-heading-highlight))
     (magit-diff-hunk-region                    (:inherit 'bold))
     (magit-diff-lines-boundary                 (:inherit 'magit-diff-lines-heading))
     (magit-diff-lines-heading                  (:inherit 'magit-diff-hunk-heading-highlight  :foreground soothe-foreground-3 :background soothe-red-2))
     (magit-diff-merge-current                  (:foreground soothe-prime-blue))
     (magit-diff-merge-proposed                 (:foreground soothe-foreground-1))
     (magit-diff-merge-separator                (:foreground soothe-blue-2))
     (magit-diff-our                            (:inherit 'magit-diff-removed))
     (magit-diff-our-highlight                  (:inherit 'magit-diff-removed-highlight))
     (magit-diff-removed                        (:foreground soothe-foreground-1              :background soothe-bg-red))
     (magit-diff-removed-highlight              (:foreground soothe-foreground-1              :background soothe-dark-red))
     (magit-diff-revision-summary               (:inherit 'magit-diff-hunk-heading))
     (magit-diff-revision-summary-highlight     (:inherit 'magit-diff-hunk-heading-highlight))
     (magit-diff-their                          (:inherit 'magit-diff-added))
     (magit-diff-their-highlight                (:inherit 'magit-diff-added-highlight))
     (magit-diff-whitespace-warning             (:inherit 'trailing-whitespace))
     (magit-diffstat-added                      (:foreground soothe-overexposed-green))
     (magit-diffstat-removed                    (:foreground soothe-overexposed-red))
     (magit-hash                                (:foreground soothe-prime-purple              :background soothe-purple-1bg))
     (magit-header                              (:foreground soothe-prime-orange              :background soothe-orange-1bg))
     (magit-item-highlight                      (:background soothe-purple-3bg))
     (magit-item-mark                           (:foreground soothe-prime-green))
     (magit-log-author                          (:foreground soothe-prime-purple              :background soothe-purple-1bg))
     (magit-log-author                          (:foreground soothe-prime-purple              :background soothe-purple-1bg))
     (magit-log-date                            (:foreground soothe-blue-4                    :background soothe-background))
     (magit-log-graph                           (:foreground soothe-blue-2                    :background soothe-blue-2bg))
     (magit-log-head-label-bisect-bad           (:foreground soothe-prime-red                 :background soothe-red-1bg))
     (magit-log-head-label-bisect-good          (:foreground soothe-turquoise-1               :background soothe-turquoise-1bg))
     (magit-log-head-label-default              (:foreground soothe-foreground-1              :background soothe-turquoise-1bg))
     (magit-log-head-label-local                (:foreground soothe-foreground-1              :background soothe-turquoise-1bg))
     (magit-log-head-label-patches              (:foreground soothe-blue-2                    :background soothe-blue-1bg))
     (magit-log-head-label-remote               (:foreground soothe-foreground-1              :background soothe-purple-2bg))
     (magit-log-head-label-tags                 (:foreground soothe-prime-orange              :background soothe-orange-1bg))
     (magit-log-message                         (:foreground soothe-foreground-2              :background soothe-background))
     (magit-log-sha1                            (:foreground soothe-turquoise-1               :background soothe-turquoise-1bg))
     (magit-section-heading                     (:foreground soothe-prime-orange              :background soothe-purple-1bg))
     (magit-section-highlight                   (:foreground soothe-prime-purple              :background soothe-purple-1bg))
     (magit-section-highlight-selection         (:foreground soothe-prime-purple              :background soothe-purple-1bg))
     (magit-section-title                       (:foreground soothe-prime-purple              :background soothe-purple-1bg))
     (magit-tag                                 (:foreground soothe-prime-orange              :background soothe-orange-1bg))
     (magit-whitespace-warning-face             (:foreground soothe-red-3                     :background soothe-red-1bg))
     (markdown-header-face-1                    (:inherit 'variable-pitch                     :foreground soothe-overexposed-purple :height 1.9))
     (markdown-header-face-2                    (:inherit 'variable-pitch                     :foreground soothe-overexposed-blue   :height 1.8))
     (markdown-header-face-3                    (:inherit 'variable-pitch                     :foreground soothe-overexposed-green  :height 1.6))
     (markdown-header-face-4                    (:inherit 'variable-pitch                     :foreground soothe-overexposed-orange :height 1.5))
     (markdown-header-face-5                    (:inherit 'variable-pitch                     :foreground soothe-overexposed-purple :height 1.4))
     (markdown-header-face-6                    (:inherit 'variable-pitch                     :foreground soothe-overexposed-blue   :height 1.3))
     (match                                     (:background soothe-blue-4bg))
     (minibuffer-prompt                         (:foreground soothe-prime-orange              :background soothe-orange-1bg))
     (mode-line                                 (:foreground soothe-gray-2                    :background soothe-gray-3bg :box nil))
     (mode-line-buffer-id                       (:foreground soothe-prime-orange))
     (mode-line-emphasis                        (:bold t))
     (mode-line-highlight                       (:foreground soothe-prime-red))
     (mode-line-inactive                        (:foreground soothe-gray-5                    :background soothe-gray-2bg :inherit 'mode-line))
     (orderless-match-face-0                    (:inherit 'match                              :foreground soothe-prime-turquoise))
     (orderless-match-face-1                    (:inherit 'highlight                          :foreground soothe-prime-purple))
     (orderless-match-face-2                    (:inherit 'lazy-highlight                     :foreground soothe-prime-orange))
     (orderless-match-face-3                    (:inherit 'secondary-selection                :foreground soothe-prime-blue))
     (org-date                                  (:foreground soothe-prime-purple              :background soothe-purple-1bg))
     (org-done                                  (:foreground soothe-prime-green               :background soothe-green-1bg))
     (org-hide                                  (:foreground soothe-gray-3                    :background soothe-gray-1bg))
     (org-link                                  (:foreground soothe-prime-blue                :background soothe-blue-1bg))
     (org-todo                                  (:foreground soothe-prime-red                 :background soothe-red-1bg))
     (popup-tip-face                            (:foreground soothe-foreground-2              :background soothe-background-2))
     (rainbow-delimiters-depth-1-face           (:foreground soothe-rainbow-delimiters-0))
     (rainbow-delimiters-depth-2-face           (:foreground soothe-rainbow-delimiters-1))
     (rainbow-delimiters-depth-3-face           (:foreground soothe-rainbow-delimiters-2))
     (rainbow-delimiters-depth-4-face           (:foreground soothe-rainbow-delimiters-3))
     (rainbow-delimiters-depth-5-face           (:foreground soothe-rainbow-delimiters-4))
     (rainbow-delimiters-depth-6-face           (:foreground soothe-rainbow-delimiters-5))
     (rainbow-delimiters-depth-7-face           (:foreground soothe-rainbow-delimiters-6))
     (rainbow-delimiters-depth-8-face           (:foreground soothe-rainbow-delimiters-7))
     (rainbow-delimiters-depth-9-face           (:foreground soothe-rainbow-delimiters-8))
     (rainbow-delimiters-unmatched-face         (:foreground soothe-rainbow-delimiters-9))
     (region                                    (:background soothe-blue-5bg))
     (secondary-selection                       (:background soothe-bg-turquoise))
     (show-paren-match                          (:foreground soothe-foreground-1              :background soothe-orange-1bg))
     (show-paren-mismatch                       (:foreground soothe-prime-orange              :background soothe-red-2bg))
     (smerge-base                               (:inherit 'diff-context))
     (smerge-lower                              (:background soothe-turquoise-1bg))
     (smerge-markers                            (:foreground soothe-prime-purple              :background soothe-purple-1bg))
     (smerge-refined-added                      (:inherit 'diff-added))
     (smerge-refined-changed                    (:inherit 'diff-changed))
     (smerge-refined-removed                    (:inherit 'diff-removed))
     (smerge-upper                              (:background soothe-blue-1bg))
     (success                                   (:foreground soothe-foreground-1              :background soothe-mid-blue))
     (swiper-background-match-face-1            (:inherit 'swiper-match-face-1))
     (swiper-background-match-face-2            (:inherit 'swiper-match-face-2))
     (swiper-background-match-face-3            (:inherit 'swiper-match-face-3))
     (swiper-background-match-face-4            (:inherit 'swiper-match-face-4))
     (swiper-line-face                          (:inherit 'match))
     (swiper-match-face-1                       (:inherit 'lazy-highlight))
     (swiper-match-face-2                       (:inherit 'isearch))
     (swiper-match-face-3                       (:inherit 'match))
     (swiper-match-face-4                       (:inherit 'isearch-fail))
     (tooltip                                   (:foreground soothe-background-2              :background soothe-foreground-2))
     (vertical-border                           (:foreground soothe-gray-4                    :background soothe-background))
     (vertico-posframe                          (:background soothe-background-dark))
     (vertico-posframe-border                   (:background soothe-background-dark-0))
     (vertico-posframe-border-2                 (:background soothe-alt-background))
     (vertico-posframe-border-3                 (:background soothe-background-2))
     (vertico-posframe-border-4                 (:background soothe-background-3))
     (web-mode-doctype-face                     (:foreground soothe-foreground-2 :weight 'bold))
     (web-mode-html-attr-equal-face             (:inherit 'default))
     (web-mode-html-attr-name-face              (:inherit 'font-lock-keyword-face))
     (web-mode-html-tag-bracket-face            (:inherit 'default))
     (web-mode-html-tag-face                    (:inherit 'font-lock-builtin-face))
     (which-func                                (:foreground soothe-prime-blue))
     (which-key-command-description-face        (:inherit 'font-lock-function-name-face))
     (which-key-group-description-face          (:inherit 'font-lock-keyword-face))
     (which-key-highlighted-command-face        (:inherit 'which-key-command-description-face :underline t))
     (which-key-key-face                        (:inherit 'font-lock-constant-face))
     (which-key-local-map-description-face      (:inherit 'which-key-command-description-face))
     (which-key-note-face                       (:inherit 'which-key-separator-face))
     (which-key-separator-face                  (:inherit 'font-lock-comment-face))
     (which-key-special-key-face                (:inherit 'which-key-key-face                 :weight 'bold :inverse-video t))
     (whitespace-empty                          (:foreground soothe-prime-yellow              :background soothe-turquoise-2bg))
     (whitespace-hspace                         (:foreground soothe-turquoise-2               :background soothe-turquoise-2bg))
     (whitespace-indentation                    (:foreground soothe-turquoise-2               :background soothe-turquoise-2bg))
     (whitespace-line                           (:foreground soothe-prime-orange              :background soothe-turquoise-2bg))
     (whitespace-newline                        (:foreground soothe-turquoise-2               :background soothe-turquoise-2bg))
     (whitespace-space                          (:foreground soothe-turquoise-2               :background soothe-turquoise-2bg))
     (whitespace-space-after-tab                (:foreground soothe-turquoise-2               :background soothe-turquoise-2bg))
     (whitespace-tab                            (:foreground soothe-turquoise-2               :background soothe-turquoise-2bg))
     (whitespace-trailing                       (:foreground soothe-prime-red                 :background soothe-turquoise-2bg)))

    ,@body))

  ;;;###autoload
(and load-file-name
     (boundp 'custom-theme-load-path)
     (add-to-list 'custom-theme-load-path
                  (file-name-as-directory
                   (file-name-directory load-file-name))))

(provide 'soothe-tva)

;;; soothe-tva.el ends here
